var http = require('http')
var https = require("https");  
var jsdom = require('jsdom')
var fs = require('fs')
const { JSDOM } = jsdom;
// var iconv = require("iconv-lite");  
// https://m.smzdm.com

// var url='https://m.smzdm.com';
// https.get(url, function (res) {  
//     var datas = [];  
//     var size = 0;  
//     res.on('data', function (data) {  
//         datas.push(data);  
//         size += data.length;  
//     //process.stdout.write(data);  
//     });  
//     res.on("end", function () {  
//         var buff = Buffer.concat(datas, size);  
//         // var result = iconv.decode(buff, "utf8"); //转码//var result = buff.toString();//不需要转编码,直接tostring  
//         var result = buff.toString()
//         const dom = new JSDOM(result);
// 		var tagAs = dom.window.document.querySelectorAll(".swiper-container a")
// 		var imgSrcs = []  // [{href: '', imgSrc: 'http...'}... ]
// 		for(let i=0;i<tagAs.length;i++) {
// 			let tHref = tagAs[i].href
// 			let tImgSrc = tagAs[i].querySelector('img').src
// 			imgSrcs.push({
// 				href: tHref,
// 				imgSrc: tImgSrc
// 			})
// 		}
//     });  
// }).on("error", function (err) {  
//     Logger.error(err.stack)  
//     // callback.apply(null);  
// });  


/// ------------------------------
// var url='https://m.smzdm.com/p/12049868/';
// https.get(url, function (res) {  
// var datas = [];  
// var size = 0;  
// res.on('data', function (data) {  
//     datas.push(data);  
//     size += data.length;  
// });  
// res.on("end", function () {  
//   var buff = Buffer.concat(datas, size);  
//   // var result = iconv.decode(buff, "utf8"); //转码//var result = buff.toString();//不需要转编码,直接tostring  
//   var result = buff.toString()
//   // console.log(result)
//   const dom = new JSDOM(result);
//   var title =desc=worth=unWorth=favorite=comments=''
//   var fotterDom = dom.window.document.querySelector(".footer-wrap")
//   if (fotterDom && fotterDom.querySelector) {
//     favorite = fotterDom.querySelector('.zm-icon-star-o ~ span').textContent
//     comments = fotterDom.querySelector('.zm-icon-comments-o ~ span').textContent
//   }
//   var reJson = {
//     message: 1,
//     data: {
//       title: title,
//       desc: desc,
//       worth: worth,
//       unWorth: unWorth,
//       favorite: favorite,
//       comments: comments
//     }
//   }
//   console.log(reJson)

// });  
// }).on("error", function (err) {  
//   Logger.error(err.stack)  
//   // callback.apply(null);  
// });  



// // 抓取 搜索结果
// let s = '电视机 55'
// var url='https://search.m.smzdm.com/?s=' + encodeURI(s) +'&source=sug&v=b';
// https.get(url, function (res) {  
// var datas = [];  
// var size = 0;  
// res.on('data', function (data) {  
//     datas.push(data);  
//     size += data.length;  
// });  
// res.on("end", function () {  
//   var buff = Buffer.concat(datas, size);  
//   // var result = iconv.decode(buff, "utf8"); //转码//var result = buff.toString();//不需要转编码,直接tostring  
//   var result = buff.toString()
//   const dom = new JSDOM(result, { runScripts: "dangerously" });
//   let ret = []
//   // //m.smzdm.com/p/12082201/
//   let reg = /^\S+\/p\/(\S+)\/$/
//   var wrapContentDom = dom.window.document.querySelector(".wrap-content")
//   try {
//     if (wrapContentDom && wrapContentDom.querySelector) {
//       let groupListItemDomArr = wrapContentDom.querySelectorAll('li.card-group-list')
//       for (let j = 0; j < groupListItemDomArr.length; j++) {
//         let article_url=article_id=article_pic=article_title=article_price=article_mall=article_date=article_comment=article_worthy=''
//         groupListItemDom = groupListItemDomArr[j]
//         let aItemDom = groupListItemDom.querySelector('a')
//         article_url = aItemDom.href
//         // 获取 article_id
//         let matchs = article_url.match(reg)
//         if(matchs && matchs[1]) {
//           article_id = matchs[1]
//         }
//         let zmCardDom = aItemDom.querySelector('.zm-card')
//         let imgDom = zmCardDom.querySelector('.zm-card-media img')
//         let titleDom = zmCardDom.querySelector('.zm-card-content .zm-card-title')
//         let priceDom = zmCardDom.querySelector('.zm-card-content .card-price')
//         let mallDomArr = zmCardDom.querySelectorAll('.zm-card-actions .zm-card-actions-left span span')
//         let commontsDomArr = zmCardDom.querySelectorAll('.zm-card-actions .zm-card-actions-right .icon-group')

//         if (imgDom) article_pic = imgDom.src
//         if (titleDom) article_title = titleDom.textContent
//         if (priceDom) article_price = priceDom.textContent.replace(/[\r\n]/g,"").trim()
//         if (mallDomArr && mallDomArr.length > 1) {
//           article_mall = mallDomArr[0].textContent.trim()
//           article_date = mallDomArr[1].textContent.trim()
//         }
//         if (commontsDomArr && commontsDomArr.length > 1) {
//           article_comment = commontsDomArr[0].textContent.trim()
//           article_worthy = commontsDomArr[0].textContent.trim()
//         }
//         //console.dir(aItemDom.onclick.toString())
//         if (article_id) {
//           ret.push({
//             article_url: article_url,
//             article_id: article_id,
//             article_pic: article_pic,
//             article_title: article_title,
//             article_price: article_price,
//             article_mall: article_mall,
//             article_date: article_date,
//             article_comment: article_comment,
//             article_worthy: article_worthy
//           })
//         }
//       }
//     }
//   } catch (e) {
//     console.log('getSearchResult occur error')
//     console.log(e)
//   }
//   var reJson = {
//     message: 1,
//     data: ret
//   }
//   console.log(reJson)
// });  
// }).on("error", function (err) {  
//   Logger.error(err.stack)  
//   // callback.apply(null);  
// });  


// var url='https://m.smzdm.com/fenlei/';
//   https.get(url, function (res) {  
//   var datas = [];  
//   var size = 0;  
//   res.on('data', function (data) {  
//       datas.push(data);  
//       size += data.length;  
//   });  
//   res.on("end", function () {  
//     var buff = Buffer.concat(datas, size);  
//     // var result = iconv.decode(buff, "utf8"); //转码//var result = buff.toString();//不需要转编码,直接tostring  
//     fs.writeFile('./fenleimenu.html', datas, { encoding: 'utf8' }, () => {
//       console.log('文件保存成功！')
//     })
//   });  
// }).on("error", function (err) {  
//   Logger.error(err.stack)  
//   // callback.apply(null);  
// });  



// // 解析菜单信息 start--------------------------------------------------------------------
// var data = fs.readFileSync('./fenleimenu.html')
// const level_1_arr = []
// const level_1_href_arr = []
// const level_2_spec_chan = []
// const level_2_norm_chan = []

// const dom = new JSDOM(data.toString())
// var mainDom = dom.window.document.querySelector("#classifys")
// var level_1_lis =  mainDom.querySelectorAll("ul.cla_ul.primary-cla.J_primary_class li")

// for (let i=0; i<level_1_lis.length; i++) {
//   level_1_arr.push( {
//     menuText: level_1_lis[i].textContent.trim()
//   })
// }
// // console.log(level_1_arr)

// // 获取特殊频道的数据
// let specChannelLis = mainDom.querySelectorAll('div.cla-box ul.spe-cha.J_second_class li.spe-chali')
// for (let i=0; i<specChannelLis.length; i++) {
//   let aDom = specChannelLis[i].querySelector('a')
//   let pDom = aDom.querySelector('p')
//   level_2_spec_chan.push(
//     {
//       href: encodeURI(aDom.href),
//       menuText: pDom.textContent.trim() 
//     }
//   )
// }

// // 获取正常频道的一级菜单数据
// let normalChannelDoms = mainDom.querySelectorAll('div.cla-box div.cla-wrap.J_second_class')
// for (let i=0; i<normalChannelDoms.length; i++) {
//   let topDom = normalChannelDoms[i].querySelector('div.spe-chali.fir-chali')
//   let aDom = topDom.querySelector('a')
//   let pDom = aDom.querySelector('p')
//   level_1_href_arr.push(
//     {
//       href: aDom.href,
//       _menuText: pDom.textContent.trim()
//     }
//   )
// }
// // console.log(level_1_href_arr)

// // 获取 二级和三级菜单信息 (二级菜单没有href)
// // let normalChannelDoms = mainDom.querySelectorAll('div.cla-box div.cla-wrap.J_second_class')
// for (let i=0; i<normalChannelDoms.length; i++) {
//   // level 1
  
//   let level2Lis = normalChannelDoms[i].querySelectorAll('ul.clawrap-ul li')
//   let tmpLevel2Arr = []

//   for (let j=0; j<level2Lis.length; j++) {
//     let level2P = level2Lis[j].querySelector('div.spe-chali p')
//     let level3As = level2Lis[j].querySelectorAll('div.channel-span.J_third_class a')
//     let tmpLevelObj3Arr = []
//     for (let k=0; k<level3As.length; k++) {
//       tmpLevelObj3Arr.push({
//         href: level3As[k].href,
//         _menuText: level3As[k].textContent.trim()
//       })
//     }
//     tmpLevel2Arr.push({
//       _menuText: level2P.textContent,
//       children: tmpLevelObj3Arr
//     })
//   }

//   level_2_norm_chan.push(tmpLevel2Arr)

// }
// console.log('level_2_norm_chan:')
// // fs.writeFile('./fenleimenu.json', JSON.stringify(level_2_norm_chan), { encoding: 'utf8' }, () => {
// //   console.log('JSON文件保存成功！')
// // })
// // console.log()


// // 处理一级菜单的href等信息
// for (let i=0; i<level_1_arr.length; i++) {
//   if (i === 0) {
//     let tmpLevelItem = level_1_arr[i]
//     tmpLevelItem.children = level_2_spec_chan
//     level_1_arr[i] = tmpLevelItem
//     continue
//   }
//   let tmpLevelItem = level_1_arr[i]
//   tmpLevelItem._menuText = level_1_href_arr[i-1]._menuText
//   tmpLevelItem.href = level_1_href_arr[i-1].href
//   tmpLevelItem.children = level_2_norm_chan[i-1]
//   level_1_arr[i] = tmpLevelItem
// }

// fs.writeFile('./fenleimenu.json', JSON.stringify(level_1_arr), { encoding: 'utf8' }, () => {
//   console.log('JSON文件保存成功！')
// })
// // 解析菜单信息 end--------------------------------------------------------------------
 

// // 分类详情页 页面抓取
// var url='https://m.smzdm.com/fenlei/dianshi/';
//   https.get(url, function (res) {  
//   var datas = [];  
//   var size = 0;  
//   res.on('data', function (data) {  
//       datas.push(data);  
//       size += data.length;  
//   });  
//   res.on("end", function () {  
//     var buff = Buffer.concat(datas, size);  
//     // var result = iconv.decode(buff, "utf8"); //转码//var result = buff.toString();//不需要转编码,直接tostring  
//     fs.writeFile('./fenleiDetail.html', datas, { encoding: 'utf8' }, () => {
//       console.log('文件保存成功！')
//     })
//   });  
// }).on("error", function (err) {  
//   Logger.error(err.stack)  
//   // callback.apply(null);  
// });  


// 解析分类详情页 start--------------------------------------------------------------------
// 需要返回的结构:
// {
//   titleData: {
//     brandImg: '',
//     brandName: '',
//     attentionNum: '',
//     brandLogo: ''
//   },
//   categoryTags: [
//     {
//       tagName: ''
//       href: ''
//     }
//   ],
//   starProducts: [
//     {
//       imgSrc: '',
//       title: '',
//       price: ''
//     }
//   ],
//   hotBrands: [
//     {
//       imgSrc: '',
//       title
//     }
//   ],
//   youhuiList: [
//     {
//       article_url: article_url,
//       article_id: article_id,
//       article_pic: article_pic,
//       article_title: article_title,
//       article_price: article_price,
//       article_mall: article_mall,
//       article_date: article_date,
//       article_comment: article_comment,
//       article_worthy: article_worthy
//     }
//   ]
// }
// 
const titleData={}
const categoryTags=[],starProducts=[],hotBrands=[],youhuiList=[]

let data = fs.readFileSync('./fenleiDetail.html')
const dom = new JSDOM(data.toString())
// 获取 titleData
try{
  let titleMainDom = dom.window.document.querySelector("#category")
  let titleBrandImgDom = titleMainDom.querySelector(".brand-img img")
  titleData.brandImg = titleBrandImgDom.src || ''
  let brandLogoDom = titleMainDom.querySelector(".brand-logo img")
  titleData.brandLogo = brandLogoDom.src || ''
  let brandNameDom = titleMainDom.querySelector(".brand-title-info .brand-name")
  titleData.brandName = brandNameDom.innerHTML.split('<span')[0] || ''
  let brandAttentionDom = titleMainDom.querySelector(".brand-title-info .attention-num span")
  titleData.attentionNum = brandAttentionDom.innerHTML.split('<span')[0] || ''

} catch(e) {
  console.log('get titleData occur error')
  console.log(e)
}
// console.log(titleData)

// 获取categoryTags
try{
  let categoryTagsDom = dom.window.document.querySelector(".category-tags")
  let tagsAs = categoryTagsDom.querySelectorAll(".swiper-wrapper .swiper-slide a")
  if (tagsAs.length > 0) {
    for(let i=0; i<tagsAs.length; i++) {
      categoryTags.push({
        tagName: tagsAs[i].textContent.replace(/[\r\n]/g,"").trim(),
        href: tagsAs[i].href
      })
    }
  }
} catch(e) {
  console.log('get categoryTags occur error')
  console.log(e)
}
// console.log(categoryTags)


// 获取starProducts
try{
  let starProductsDom = dom.window.document.querySelector(".star-products")
  let starProductsAs = starProductsDom.querySelectorAll(".swiper-wrapper .swiper-slide a")
  if (starProductsAs.length > 0) {
    for(let i=0; i<starProductsAs.length; i++) {
      // 获取img
      let imgDom = starProductsAs[i].querySelector(".img-radius img")
      let titeAndPrice = starProductsAs[i].querySelectorAll(".card-info p")
      starProducts.push({
        href: starProductsAs[i].href,
        imgSrc: imgDom.src,
        title: titeAndPrice[0].textContent,
        price: titeAndPrice[1].textContent
      })
    }
  }
} catch(e) {
  console.log('get starProducts occur error')
  console.log(e)
}
// console.log(starProducts)

// 获取hotBrands
try{
  let hotBrandsMainDom = dom.window.document.querySelector(".hot-brands")
  let hotBrandAs = hotBrandsMainDom.querySelectorAll(".swiper-wrapper .swiper-slide a")
  if (hotBrandAs.length > 0) {
    for(let i=0; i<hotBrandAs.length; i++) {
      // 获取img
      let imgDom = hotBrandAs[i].querySelector(".card-img img")
      let titleDom = hotBrandAs[i].querySelector(".card-info .card-title")
      hotBrands.push({
        href: hotBrandAs[i].href,
        imgSrc: imgDom.src,
        title: titleDom.textContent
      })
    }
  }
} catch(e) {
  console.log('get starProducts occur error')
  console.log(e)
}
// console.log(hotBrands)

// 获取youhuiList
try{
  let reg = /^\S+\/p\/(\S+)\/$/
  let youhuiMainDom = dom.window.document.querySelector("#youhui-wrapper")
  let youhuiAs = youhuiMainDom.querySelectorAll("li.card-group-list a")
  if (youhuiAs.length > 0) {
    for(let i=0; i<youhuiAs.length; i++) {
      // 获取article_id
      let article_url = youhuiAs[i].href
      let article_id = ''
      let matchs = article_url.match(reg)
      if(matchs && matchs[1]) {
        article_id = matchs[1]
      }
      // 获取img
      let imgDom = youhuiAs[i].querySelector(".zm-card-media img")
      let titleDivs = youhuiAs[i].querySelectorAll(".zm-card-content div")
      let actionsDom = youhuiAs[i].querySelector(".zm-card-content .zm-card-actions")
      let mallDomArr = actionsDom.querySelectorAll(".zm-card-actions-left span span")
      let commentsDomArr = actionsDom.querySelectorAll(".zm-card-actions-right .icon-group")
      youhuiList.push({
        article_url: article_url,
        article_id: article_id,
        article_pic: imgDom.src,
        article_title: titleDivs[0].textContent.trim(),
        article_price: titleDivs[1].textContent.trim(),
        article_mall: mallDomArr[0].textContent.trim(),
        article_date: mallDomArr[1].textContent.trim(),
        article_comment: commentsDomArr[0].textContent.trim(),
        article_worthy: commentsDomArr[1].textContent.trim()
      })
    }
  }
} catch(e) {
  console.log('get youhuiList occur error')
  console.log(e)
}

let menuDetail = {
  titleData,
  categoryTags,
  starProducts,
  hotBrands,
  youhuiList
};

fs.writeFile('./menuDetail.json', JSON.stringify(menuDetail), { encoding: 'utf8' }, () => {
  console.log('JSON文件保存成功！')
})
// 解析分类详情页 end--------------------------------------------------------------------

